package cl.foursoft.sirvicod.dao.implementacion.postgresql;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import cl.foursoft.sirvicod.dao.implementacion.DBBase;
import cl.foursoft.sirvicod.dao.interfaces.IEstadoDepto;
import cl.foursoft.sirvicod.dao.transferObject.EstadoDeptoTO;
import cl.foursoft.sirvicod.util.UtilLog;

public class EstadoDeptoDB extends DBBase implements IEstadoDepto{
	
	public EstadoDeptoDB(Connection conn){
		this.conn = conn;
	}

	@Override
	public List<EstadoDeptoTO> obtenerEstados() {
		List<EstadoDeptoTO> resp = null;
		ResultSet rs = null;
		PreparedStatement pstmt = null;
		
		String query = "SELECT id_estado, descripcion " +
					   "FROM estado_depto; ";
		try{
			pstmt = conn.prepareStatement(query);
			rs = pstmt.executeQuery();
			
			resp = new ArrayList<EstadoDeptoTO>();
			while(rs.next()){
				EstadoDeptoTO estado = new EstadoDeptoTO();
				estado.setIdEstado(rs.getString("id_estado"));
				estado.setDescripcion(rs.getString("descripcion"));
				
				resp.add(estado);
			}
			
			rs.close();
			pstmt.close();
		}
		catch (SQLException sqle){
			UtilLog.registrar(sqle);
		}
		catch (Exception ex) {
			UtilLog.registrar(ex);
		}
		
		finally{
			if (pstmt != null) {
				try{
					pstmt.close();					
				} 
				catch (SQLException e) {
					UtilLog.registrar(e); 
					e.printStackTrace();
				}
			}
		}
		
		return resp;
	}

	@Override
	public EstadoDeptoTO obtenerEstado(String idEstado) {
		EstadoDeptoTO resp = null;
		ResultSet rs = null;
		PreparedStatement pstmt = null;
		
		String query = "SELECT id_estado, descripcion " +
					   "FROM estado_depto " +
					   "WHER id_estado = ?";
		try{
			pstmt = conn.prepareStatement(query);
			pstmt.setString(1, idEstado);
			rs = pstmt.executeQuery();
			
			if(rs.next()){
				resp = new EstadoDeptoTO();
				resp.setIdEstado(rs.getString("id_estado"));
				resp.setDescripcion(rs.getString("descripcion"));
			}
			
			rs.close();
			pstmt.close();
		}
		catch (SQLException sqle){
			System.out.print("[ERROR] [" + this.getClass().getCanonicalName() + "] [obtenerEstado][" + sqle.getMessage() + "]");
		}
		catch (Exception ex) {
			System.out.print("[ERROR] [" + this.getClass().getCanonicalName() + "] [obtenerEstado][" + ex.getMessage() + "]");
		}
		
		finally{
			if (pstmt != null) {
				try{
					pstmt.close();					
				} 
				catch (SQLException e) {
					System.out.print("[ERROR] [" + this.getClass().getCanonicalName() + "] [obtenerEstado][" + e.getMessage() + "]"); 
					e.printStackTrace();
				}
			}
		}
		
		return resp;
	}
}
